const { count } = require('console');
var fs=require('fs');
var path=require('path');//路径上升到模块

/**
 * @func 找出指定目录下最大的文件
 * @param {string} dir 
 * @param {function} cd 
 */
function findLargest(dir,cb){
    fs.readdir(dir,(err,files)=>{
        // console.log(files)
        if(err) {
            return cb(err);
        }
        console.log(files);
        // cb(null,files)
        // 是文件，还是目录
        // fs.readFile('./test/files[0]')
        var couter = files.length;//数量
        var errored=false;//是否出错？
        var stats=[];// 存放文件
        files.forEach((file,index)=>{
            // 得到相对于当前4.js的对的目录
            // console.log(path.join(dir,file));
            fs.stat(path.join(dir,file),(err,stat)=>{
                if(errored) return;// 如果有错误直接返回 
                if(err){
                    errored=true;//如果文件有错误返回 其他文件还需要执行
                    return cb(err);
                }
                stats[index]=stat;//所有文件信息 入数组了
                if(--couter==0){//最后一个
                    var fileStats=stats
                        // .map 把一个数组 变成一个新的数组
                        .filter((stat)=>stat.isFile());
                    let maxFileSize=0;// 最大长度
                    for(let fileStat of fileStats){
                        if(fileStat.size>maxFileSize){
                            maxFileSize=fileStat.size;
                        }
                    }
                    cb(null,maxFileSize);//如果没有就null 有就传递maxFileSize
                    // console.log(largest);
                }
            })
            // fs.stat(path.join(dir,file))
        })
    })//异步
}
findLargest('./test',(err,fileSize)=>{
    if(err){
        return console.error(err);
    }
    console.log('largest file war:',fileSize)
})